CC=gcc
LEX=flex
YACC=bison

YACCFLAGS= -d 

DCCFLAGS= -DDEBUG=1 -DTRACE=1
#DCCFLAGS= -DTRACE=1
DYFLAGS= -t -v -d 

all: scc 

scc: sintax.o lexic.o symbol.o message.o memassign.o interprete.o
	$(CC) $^ -o $@

sintax.c: sc.y 
	$(YACC) $(YACCFLAGS) -o $@ $^ 

lexic.c: sample.l sintax.h symbol.h
	$(LEX) -o$@ sample.l 

symbol.o: symbol.c symbol.h

message.o: message.c 

memassign.o: memassign.c memassign.h

interprete.o: interprete.c interprete.h

debug: scd

scd: sintaxd.o lexicd.o symbold.o messaged.o memassignd.o interpreted.o
	$(CC) $(DCCFLAGS) $^ -o $@

sintaxd.c: sc.y 
	$(YACC) $(DYFLAGS) -o $@ $^ 
	mv sintaxd.h sintax.h

lexicd.c: sample.l sintax.h symbol.h
	$(LEX) -o$@ sample.l 

sintaxd.o: sintaxd.c 
	$(CC) $(DCCFLAGS) -c $^ -o $@

lexicd.o: lexicd.c 
	$(CC) $(DCCFLAGS) -c $^ -o $@

symbold.o: symbol.c 
	$(CC) $(DCCFLAGS) -c $^ -o $@

messaged.o: message.c 
	$(CC) $(DCCFLAGS) -c $^ -o $@

memassignd.o: memassign.c 
	$(CC) $(DCCFLAGS) -c $^ -o $@

interpreted.o: interprete.c 
	$(CC) $(DCCFLAGS) -c $^ -o $@

clean:
	rm *.o lexic.c sintax.c sintax.h scc *.err

mrproper:
	rm *.o *.output lexicd.c sintax.c sintaxd.c sintax.h scd *.err 
